/*
 * 官网地站:http://www.mob.com
 * 技术支持QQ: 4006852216
 * 官方微信:ShareSDK   （如果发布新版本的话，我们将会第一时间通过微信将版本更新内容推送给您。如果使用过程中有任何问题，也可以通过微信与我们取得联系，我们将会在24小时内给予回复）
 *
 * Copyright (c) 2013年 mob.com. All rights reserved.
 */

package wzp.com.texturemusic.onekeyshare.themes.classic.land;

import android.graphics.Bitmap;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.ScrollView;
import android.widget.TextView;

import com.mob.tools.gui.AsyncImageView;
import com.mob.tools.utils.BitmapHelper;
import com.mob.tools.utils.ResHelper;

import java.io.File;

import wzp.com.texturemusic.onekeyshare.OnekeyShareThemeImpl;
import wzp.com.texturemusic.onekeyshare.themes.classic.EditPage;
import wzp.com.texturemusic.onekeyshare.themes.classic.XView;

/**
 * 横屏的编辑页
 */
public class EditPageLand extends EditPage implements OnClickListener, TextWatcher, Runnable {
    private static final int DESIGN_SCREEN_WIDTH = 720;
    private static final int DESIGN_BOTTOM_HEIGHT = 75;
    private static final int DESIGN_LEFT_PADDING = 40;
    private static final int DESIGN_TITLE_HEIGHT_L = 70;
    private static final int DESIGN_THUMB_HEIGHT_L = 280;
    private static final int DESIGN_REMOVE_THUMB_HEIGHT_L = 60;

    public EditPageLand(OnekeyShareThemeImpl impl) {
        super(impl);
    }

    public void onCreate() {
        super.onCreate();

        int screenHeight = ResHelper.getScreenHeight(activity);
        float ratio = ((float) screenHeight) / DESIGN_SCREEN_WIDTH;

        maxBodyHeight = 0;

        llPage = new LinearLayout(activity);
        llPage.setOrientation(LinearLayout.VERTICAL);
        activity.setContentView(llPage);

        rlTitle = new RelativeLayout(activity);
        rlTitle.setBackgroundColor(0xffe6e9ec);
        int titleHeight = (int) (DESIGN_TITLE_HEIGHT_L * ratio);

        LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, titleHeight);
        llPage.addView(rlTitle, lp);
        initTitle(rlTitle, ratio);

        RelativeLayout rlBody = new RelativeLayout(activity);
        rlBody.setBackgroundColor(0xffffffff);
        lp = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
        llPage.addView(rlBody, lp);
        initBody(rlBody, ratio);

        LinearLayout llShadow = new LinearLayout(activity);
        llShadow.setOrientation(LinearLayout.VERTICAL);
        rlBody.addView(llShadow, new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
        initShadow(llShadow, ratio);

        llBottom = new LinearLayout(activity);
        llBottom.setOrientation(LinearLayout.VERTICAL);
        lp = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
        llPage.addView(llBottom, lp);
        initBottom(llBottom, ratio);
    }

    private void initTitle(RelativeLayout rlTitle, float ratio) {
        tvCancel = new TextView(activity);
        tvCancel.setTextColor(0xff3b3b3b);
        tvCancel.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18);
        tvCancel.setGravity(Gravity.CENTER);
        int resId = ResHelper.getStringRes(activity, "ssdk_oks_cancel");
        if (resId > 0) {
            tvCancel.setText(resId);
        }
        int padding = (int) (DESIGN_LEFT_PADDING * ratio);
        tvCancel.setPadding(padding, 0, padding, 0);
        RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);
        rlTitle.addView(tvCancel, lp);
        tvCancel.setOnClickListener(this);

        TextView tvTitle = new TextView(activity);
        tvTitle.setTextColor(0xff3b3b3b);
        tvTitle.setTextSize(TypedValue.COMPLEX_UNIT_SP, 22);
        tvTitle.setGravity(Gravity.CENTER);
        resId = ResHelper.getStringRes(activity, "ssdk_oks_multi_share");
        if (resId > 0) {
            tvTitle.setText(resId);
        }
        lp = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);
        lp.addRule(RelativeLayout.CENTER_IN_PARENT);
        rlTitle.addView(tvTitle, lp);

        tvShare = new TextView(activity);
        tvShare.setTextColor(0xffff6d11);
        tvShare.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18);
        tvShare.setGravity(Gravity.CENTER);
        resId = ResHelper.getStringRes(activity, "ssdk_oks_share");
        if (resId > 0) {
            tvShare.setText(resId);
        }
        tvShare.setPadding(padding, 0, padding, 0);
        lp = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);
        lp.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
        rlTitle.addView(tvShare, lp);
        tvShare.setOnClickListener(this);
    }

    private void initBody(RelativeLayout rlBody, float ratio) {
        svContent = new ScrollView(activity);
        rlBody.addView(svContent, new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));

        LinearLayout llContent = new LinearLayout(activity);
        llContent.setOrientation(LinearLayout.HORIZONTAL);
        svContent.addView(llContent, new ScrollView.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));

        etContent = new EditText(activity);
        int padding = (int) (DESIGN_LEFT_PADDING * ratio);
        etContent.setPadding(padding, padding, padding, padding);
        etContent.setBackgroundDrawable(null);
        etContent.setTextColor(0xff3b3b3b);
        etContent.setTextSize(TypedValue.COMPLEX_UNIT_SP, 21);
        etContent.setText(sp.getText());
        LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(0, LayoutParams.WRAP_CONTENT);
        lp.weight = 1;
        llContent.addView(etContent, lp);
        etContent.addTextChangedListener(this);

        rlThumb = new RelativeLayout(activity);
        rlThumb.setBackgroundColor(0xff313131);
        int thumbWidth = (int) (DESIGN_THUMB_HEIGHT_L * ratio);
        int xWidth = (int) (DESIGN_REMOVE_THUMB_HEIGHT_L * ratio);
        lp = new LinearLayout.LayoutParams(thumbWidth, thumbWidth);
        lp.rightMargin = lp.bottomMargin = lp.topMargin = padding;
        llContent.addView(rlThumb, lp);

        aivThumb = new AsyncImageView(activity) {
            public void onImageGot(String url, Bitmap bm) {
                thumb = bm;
                super.onImageGot(url, bm);
            }
        };
        aivThumb.setScaleToCropCenter(true);
        RelativeLayout.LayoutParams rllp = new RelativeLayout.LayoutParams(thumbWidth, thumbWidth);
        rlThumb.addView(aivThumb, rllp);
        aivThumb.setOnClickListener(this);
        initThumb(aivThumb);

        xvRemove = new XView(activity);
        xvRemove.setRatio(ratio);
        rllp = new RelativeLayout.LayoutParams(xWidth, xWidth);
        rllp.addRule(RelativeLayout.ALIGN_PARENT_TOP);
        rllp.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
        rlThumb.addView(xvRemove, rllp);
        xvRemove.setOnClickListener(this);
    }

    private void initBottom(LinearLayout llBottom, float ratio) {
        LinearLayout llAt = new LinearLayout(activity);
        llAt.setPadding(0, 0, 0, 5);
        llAt.setBackgroundColor(0xffffffff);
        int bottomHeight = (int) (DESIGN_BOTTOM_HEIGHT * ratio);
        LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, bottomHeight);
        llBottom.addView(llAt, lp);

        tvAt = new TextView(activity);
        tvAt.setTextColor(0xff3b3b3b);
        tvAt.setTextSize(TypedValue.COMPLEX_UNIT_SP, 21);
        tvAt.setGravity(Gravity.BOTTOM);
        tvAt.setText("@");
        int padding = (int) (DESIGN_LEFT_PADDING * ratio);
        tvAt.setPadding(padding, 0, padding, 0);
        lp = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);
        llAt.addView(tvAt, lp);
        tvAt.setOnClickListener(this);
        if (isShowAtUserLayout(platform.getName())) {
            tvAt.setVisibility(View.VISIBLE);
        } else {
            tvAt.setVisibility(View.INVISIBLE);
        }

        tvTextCouter = new TextView(activity);
        tvTextCouter.setTextColor(0xff3b3b3b);
        tvTextCouter.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18);
        tvTextCouter.setGravity(Gravity.BOTTOM | Gravity.RIGHT);
        onTextChanged(etContent.getText(), 0, 0, 0);
        tvTextCouter.setPadding(padding, 0, padding, 0);
        lp = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);
        lp.weight = 1;
        llAt.addView(tvTextCouter, lp);

        View v = new View(activity);
        v.setBackgroundColor(0xffcccccc);
        int px1 = ratio > 1 ? ((int) ratio) : 1;
        lp = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, px1);
        llBottom.addView(v, lp);
    }

    private void initShadow(LinearLayout llShadow, float ratio) {
        int px1 = ratio > 1 ? ((int) ratio) : 1;
        LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, px1);

        View v = new View(activity);
        v.setBackgroundColor(0x29000000);
        llShadow.addView(v, lp);

        v = new View(activity);
        v.setBackgroundColor(0x14000000);
        llShadow.addView(v, lp);

        v = new View(activity);
        v.setBackgroundColor(0x07000000);
        llShadow.addView(v, lp);
    }

    private void initThumb(AsyncImageView aivThumb) {
        String imageUrl = sp.getImageUrl();
        String imagePath = sp.getImagePath();
        String[] imageArray = sp.getImageArray();

        Bitmap pic = null;
        rlThumb.setVisibility(View.VISIBLE);
        if (!TextUtils.isEmpty(imagePath) && new File(imagePath).exists()) {
            try {
                pic = BitmapHelper.getBitmap(imagePath);
            } catch (Throwable e) {
                e.printStackTrace();
            }
        }

        if (pic != null) {
            thumb = pic;
            aivThumb.setBitmap(pic);
        } else if (imageArray != null && imageArray.length > 0) {
            if (!TextUtils.isEmpty(imageArray[0]) && new File(imageArray[0]).exists()) {
                try {
                    pic = BitmapHelper.getBitmap(imagePath);
                } catch (Throwable e) {
                    e.printStackTrace();
                }
            }
        }

        if (pic != null) {
            thumb = pic;
            aivThumb.setBitmap(pic);
        } else if (pic == null && !TextUtils.isEmpty(imageUrl)) {
            aivThumb.execute(imageUrl, 0);
        } else {
            rlThumb.setVisibility(View.GONE);
        }
    }

}
